package com.springboot.demo.design.pattern.listen;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 监听器注册器
 *
 * @author supu
 * @date 2019-07-02 15:39
 **/
@Configuration
public class ListenerRegister {
    @Autowired
    private CreateOrderListener orderListener;
    @Autowired
    private UpdateAccountListener updateAccountListener;
    @Autowired
    private UpdateOrderListener updateOrderListener;
    @Autowired
    private CreateAccountListener createAccountListener;

    @Bean
    public ListenerHolder<ListenerContext> createAccountListenerHolder() {
        ListenerHolder<ListenerContext> listenerHolder = new ListenerHolder<>();
        listenerHolder.addListener(createAccountListener);
        return listenerHolder;
    }

    @Bean
    public ListenerHolder<ListenerContext> createOrderListenerHolder() {
        ListenerHolder<ListenerContext> listenerHolder = new ListenerHolder<>();
        listenerHolder.addListener(orderListener);
        listenerHolder.addListener(updateAccountListener);
        return listenerHolder;
    }

    @Bean
    public ListenerHolder<ListenerContext> updateOrderListenerHolder() {
        ListenerHolder<ListenerContext> listenerHolder = new ListenerHolder<>();
        listenerHolder.addListener(updateOrderListener);
        listenerHolder.addListener(updateAccountListener);
        return listenerHolder;
    }
}
